#ifndef __BASE_STATE_HPP__
#define __BASE_STATE_HPP__

#include <time.h>

class MMessage;

template <class entityType, class stateType>
class BaseState
{
public:
	BaseState() {}
	virtual ~BaseState() {}

	virtual void beginState(entityType*) = 0;
	virtual void updateState(entityType*, clock_t) = 0;
	virtual void endState(entityType*) = 0;
	virtual void handleMessage(entityType*, MMessage*) = 0;

	//virtual void resetState() = 0;

	const stateType& getStateName() const {return m_stateName;}

protected:
	stateType   m_stateName;
};

#endif //__BASE_STATE_HPP__

//EOF
